As computing technology advances and computing devices become more prevalent, computer programming techniques have adapted for the wide variety of computing devices in use. For instance, program code can be generated according to various programming languages to control computing devices ranging in size and capability from relatively constrained devices such as simple embedded systems, mobile handsets, and the like, to large, high-performance computing entities, such as data centers or server clusters.
Conventionally, as applications are being developed and/or modified for use with computing devices, there might be older (legacy) frameworks (e.g., a reusable set of libraries or classes) that are useful. However, due to size constraints (e.g., processing power, memory capacity, screen size, and so forth) on some devices (e.g., portable devices such as cell phones), the existing frameworks might not be able to be used successfully on such devices. Therefore, the framework is rewritten or a new framework is created for use with the lower capability devices, which increases costs and consumes time and other resources in order to create and/or modify frameworks.
Such challenges exist in frameworks that feature a framework-level component model where the framework is split across different units that can be distributed and consumed independently. Furthermore, the problem can be particular to strongly typed frameworks, where type identity is tied to the component in which the type is defined.
Consequently, there is no system today that properly supports the evolution of a framework by, at substantially the same time, offering both old (legacy) and new public surface area factorings while mitigating the amount of changes needed in the implementation of existing distributions of framework, or that enables such evolution of a framework without breaking existing binaries. Further, no such system today enables the framework evolution without degradation in the security guarantees of a linking model.
The above-described deficiencies of today's computing system and framework system techniques are merely intended to provide an overview of some of the problems of conventional systems, and are not intended to be exhaustive. Other problems with conventional systems and corresponding benefits of the various non-limiting embodiments described herein may become further apparent upon review of the following description.